home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / B-Book Series / (k)b6.d64 / matinvert.l < prev    next >
Text File  |  2007-02-28  |  889b  |  37 lines

  1. 9000 PROC MATINVERT(REF A(,),N,REF AI(,)) CLOSED
  2. 9010 DIM AA(N,N), U(N,N)
  3. 9020 MATEQUAL(A,N,N,AA)
  4. 9030 MATUNIT(U,N)
  5. 9040 FOR K#:=1 TO N DO
  6. 9050 FOR I#:=1 TO N DO
  7. 9060 AI(K#,I#):=A(K#,I#)/A(K#,K#)
  8. 9070 U(K#,I#):=U(K#,I#)/A(K#,K#)
  9. 9080 ENDFOR I#
  10. 9090 FOR I#:=1 TO N DO
  11. 9100 A(K#,I#):=AI(K#,I#)
  12. 9110 ENDFOR I#
  13. 9120 FOR I#:=1 TO N DO
  14. 9130 IF I#=K# THEN GOTO SKIP
  15. 9140 FOR J#:=1 TO N DO
  16. 9150 AI(I#,J#):=A(I#,J#)-A(I#,K#)*A(K#,J#)
  17. 9160 U(I#,J#):=U(I#,J#)-A(I#,K#)*U(K#,J#)
  18. 9170 ENDFOR J#
  19. 9180 FOR J#:=1 TO N DO
  20. 9190 A(I#,J#):=AI(I#,J#)
  21. 9200 ENDFOR J#
  22. 9210 SKIP:
  23. 9220 ENDFOR I#
  24. 9230 ENDFOR K#
  25. 9240 MATEQUAL(U,N,N,AI)
  26. 9250 MATMULT(AA,N,N,AI,N,U)
  27. 9260 FOR I#:=1 TO N DO
  28. 9270 FOR J#:=1 TO N DO
  29. 9280 S:=S+ABS(U(I#,J#))
  30. 9290 ENDFOR J#
  31. 9300 ENDFOR I#
  32. 9310 SMAX:=1E-08
  33. 9320 S:=S-N
  34. 9330 S:=S/(N*(N-1))
  35. 9340 IF S>SMAX THEN PRINT "NORMALIZED ERROR= ",S," IN MATINVERT EXCEEDS LIMIT"
  36. 9350 ENDPROC MATINVERT
  37.